int inpin=0;
int segmentpins[]={9,8,7,6,5,4,3,2};
int selectpins[]={10,11,12,13};
int tempbit[4];
byte numbers[]
{
B111111100,//0
B01100000,
B11011010,
B11110010,
B01100110,
B10110110,
B00111110,
B11100000,
B11111110,
B1110010,//9
B00000001,//DP

}; 
void setup()
{
for (int i=0;i<8;i++0)
	{
	pinmode(segmentpins[i],output);
	}
for(int j=0;j<4;j++)
	{
	pinmode(selectpins[j],output;
	}

}
void loop
{
int val=analogRead(inpin);
float temp=(val/1024.0)*5000/10;
int temp100=temp*100;//此时没有小数部分
for(int m=3,m>=0,m--)
	{
	tempbit[m]=temp100%10;//6518,第3位为8,第2位为1,第1位为5,第0位6
	temp100=temp100/10;/651//65//6

	}//该for循环就是将所有数取出来
for(int i=0;i<50;i++)
	{
	for(int p=0;p<4;p++)
		{
		int dotval;
		if (p==1)//第二位
			{
			dotval=1;
			}
		else{
			dotvalue=0;
			}
		bitwrite(number[tempbit[p]],0,dotvalue);//6518//第二位数字启用小数点
		digitalWrite(selectpins[p],high);选中第几位数码管
		numbershows(tempbit[p]);//显示数字
		delay(5);
		digitalWrite(selectpins[p],low);//释放选中,选中到下一个
		bitwrite(numbers[tempbit[p]],0,0);//第二位数字的零位置为0//重新开始
		}

	}
}
void numbershow(int number)
{
boolean bitval;
for(int n;n<8;n++)
	{
	bitval=bitread(number[number],n);//照应0-9//从最右开始读
	bitvalue=!bitvalue;//共阳极取反
	digitalwrite(segmentpins[n],bitvalue);//相应引脚置位显示
	}
}
